//
//  XZ_AFSessionManager.h
//  Project_Demo
//
//  Created by caoxiaozhu on 2018/7/16.
//  Copyright © 2018年 caoxiaozhu. All rights reserved.
//

#import "AFHTTPSessionManager.h"

#define XZ_NetworkingRequest [XZ_AFSessionManager shardManager]
@class UploadParam;
/**
 *  网络请求类型
 */
typedef NS_ENUM(NSUInteger,HttpRequestType) {
    /**
     *  get请求
     */
    HttpRequestTypeGet = 0,
    /**
     *  post请求
     */
    HttpRequestTypePost
};

@interface XZ_AFSessionManager : AFHTTPSessionManager

+(instancetype)sharedInstance;

/**
 *  发送get请求
 *
 *  @param parameters 请求的参数
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 */
- (void)getWithParameters:(id)parameters
                  success:(void (^)(id))success
                  failure:(void (^)(NSError *))failure;

/**
 *  发送post请求
 *
 *  @param parameters 请求的参数
 *  @param success    请求成功的回调
 *  @param failure    请求失败的回调
 */
- (void)postParameters:(id)parameters
               success:(void (^)(id))success
               failure:(void (^)(NSError *))failure;


/**
 发送网络请求
 @param parameters 请求的参数
 @param type 请求的类型
 @param success 成功的回调
 @param failure 失败的回调
 */
- (void)requestParameters:(id)parameters
                     type:(HttpRequestType)type
                  success:(void (^)(id))success
                  failure:(void (^)(NSError *))failure;

/**
 上传图片

 @param image 需要上传的图片
 @param parameters 上传图片的参数
 @param success 上传成功的回调
 @param progress 上传图片的完成度
 @param failure 上传失败的回调
 */

- (void)uploadWithimage:(UIImage *)image
             parameters:(id)parameters
                success:(void (^)(id responseObject))success
               progress:(void (^)(CGFloat progress))progress failure:(void (^)(NSError *error))failure;

/**
 *  下载数据
 *
 *  @param parameters  下载数据的参数
 *  @param success     下载成功的回调
 *  @param failure     下载失败的回调
 */
- (void)downLoadParameters:(id)parameters progerss:(void (^)(void))progress success:(void (^)(void))success failure:(void (^)(NSError *))failure;

@end
